package com.pureut.production.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.pureut.production.domain.CutOrdersDocument;
import com.pureut.production.domain.PublicScheduling;
import com.pureut.production.domain.SpunlaceOrder;
import com.pureut.production.domain.dto.*;
import com.pureut.production.domain.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: CM
 * @date: 2023/2/9    11:04
 */
@Mapper
public interface SpunlaceOrderMapper extends BaseMapper<SpunlaceOrder> {



    /**
     * 获取排产时间最近的一条数据
     * @return
     */
    SpunlaceOrder getByTime(@Param("line") String line);

    /**
     * 获取当前线别下有上线标识的单据
     * @param line
     * @return
     */
    SpunlaceOrder getRunFalg(@Param("line") String line);

    /**
     * 查询水刺制令单列表
     * @return
     */
    List<SpunlaceOrderDto> getSpunlaceOrderList(SpunlaceOrderVo spunlaceOrderVo);

    /**
     * 查询水刺制令单列表(巡检单据调用)
     * @return
     */
    List<SpunlaceOrderDto> getSpunlaceOrderNumList(SpunlaceOrderVo spunlaceOrderVo);


    /**
     * 水刺制令单查看
     * @param id
     * @return
     */
    SpunlaceOrderViewDto getView(@Param("id") Long id);

    /**
     * 水刺制令单信息
     * @param id
     * @return
     */
    SpunlaceOrderDto selectSpunlace(Long id);

    /**
     * 查询水刺数据
     */
    List<SelectCombinationListDto> getData(SelectCombinationListVo selectCombinationListVo);

    /**
     * 新增水刺数据
     */
    int addOrderCutScheduling(PublicScheduling publicScheduling);

    /**
     * 水刺分切制令单列表
     * @return
     */
    List<ScFqDto> selectScFqList(String moNumber);

    /**
     * 查出对应物料的水刺制令单列表
     * @param materialCode
     * @return
     */
    List<Long> selectQualityOrder(String materialCode);

    /**
     * 查出
     * @param materialType
     * @return
     */
    List<Long> selectMaterialType(String materialType);

    /**
     * pda制令单查询列表
     * @param cutFeedVo
     * @return
     */
    List<CutFeedDto> getSpunlaceOrderListPda(CutFeedVo cutFeedVo);

    /**
     * 根据库存的关联单号查询水刺制令单工艺卡编码
     * @param wsiConnectNum
     * @return
     */
    SpunlaceOrderDto getProcessCardCoding(String wsiConnectNum);

    /**
     * 查询当前线别下状态为质量标准，且物料编码是品质的，开工时间最短的水刺执行单
     * @param materialCode
     * @param productionLine
     * @return
     */
    SpunlaceOrder selectQualityCodeProcuction(@Param("materialCode") String materialCode, @Param("productionLine") String productionLine);

    SpunlaceOrder selectQualityTypeProcuction(@Param("materialType") String materialType,@Param("productionLine") String productionLine);

    List<PdaDto> selectPdaList(PdaVo pdaVo);

    /**
     * 生产看板- 获取生产中制令单信息
     * @param lineCode
     * @return
     */
    ManufacturingOrderDto getSpunlaceOrderInfo(String lineCode);

    /**
     * 生产看板-获取待上线制令单信息
     * @param lineCode
     * @return
     */
    List<ToBeOnlineDto> selectToBeOnline(String lineCode);

    /**
     * 生产看板-班组月产量统计
     * @param month
     * @param lineCode
     * @return
     */
    TeamsMonthDto getTeamsMonthOutPut(@Param("month") String month,@Param("lastMonth") String lastMonth,@Param("lineCode") String lineCode,@Param("groupCode") String groupCode);

    /**
     * 生产看板-最近2个月制令单料号
     * @param lineCode
     * @return
     */
    List<GroupMaterialDto> getGroupMaterialCode(String lineCode);

    /**
     * 生产看板-查询当前线别下，该料号产出重量
     * @param materialType
     * @param lineCode
     * @return
     */
    ProductionContrastDto getMonthWeight(@Param("materialType") String materialType,@Param("lineCode") String lineCode,@Param("lastMonth") String lastMonth,@Param("month") String month);

    /**
     * 根据关联单号查询投料信息
     * @param feedOrderNumber
     * @return
     */
    List<MaterialResumeDto> selectSpunlaceOrderInfo(String materialNumber);

    /**
     * 根据生产计划单号查询水刺制令单数据(生产排程退回调用fegin)
     */
    List<SpunlaceOrderDto> getSunlaceList(String planNumber);

    /**
     * 查询水刺和脱脂列表信息
     * @param productionLine
     * @return
     */
    List<ScFqDto> getMoSpunlaceAndDegrease(String productionLine);

    /**
     *  根据计划单号查询分切指令单
     * @param s
     * @return
     */
    List<CutOrdersDocument> getFqInfo(String planNumber);
}
